<?php
if (!isset($_SESSION))
    session_start();
include_once($_SESSION['dir'].'/basedatos.php');
class Publicacion {
	/*Funcion que agrega la publicacion a la base de datos
	 * Parametros
	 * $perfil = instancia de la clase autor o identificador de la persona 
	 * $muro =  instancia de la clase muro o identificador de muro
 	 * $nombre = nombre o titulo de la publicacion
         * $contenido = contenido de la publicacion (puede ser nulo)
	 * $Img = Arreglo $_FILE 
	 */
        function agregarPublicacion($perfil, $muro, $nombre, $contenido, $Img)
	{
             /*Revisamos que haya un nombre*/
            $res = strlen($nombre);
             if ((strlen($nombre) == 0) || (strlen($nombre) >= 20) 
                     || (strcmp($nombre, "") == 0))
             {
                   echo "<script language='JavaScript'>
                            alert('La publicacion tiene que tener un nombre menor a 20 caracteres.'); 
                        </script>";
             }
             else if (($Img['imagen']['size'] == 0) && 
                     ((strlen($contenido) == 0) || (strcmp($nombre, "") == 0)))
             {
                   echo "<script language='JavaScript'>
                            alert('La publicacion tiene que tener un contenido o imagen.'); 
                        </script>";
             }
             else if (strlen($contenido) > 255)
             {
                echo "<script language='JavaScript'>
                            alert('El contenido no puede sobrepasar los 255 caracteres.'); 
                        </script>"; 
             }    
             else {
                /* Escapamos los strings para evitar sql injection
                 * que consiste en colocar palabras reservadas de mysql como texto que 
                 * pueden corromper la base de datos, descativamos el escape que trae php por
                 * defecto que es el magic_quotes y aplicamos el escape de mysql 
                 * (OJO no aplicar el escape de php y el de mysql juntos o la data 
                 * suministrada puede dañarse) 
                 */  
                 if (get_magic_quotes_gpc())
                 {
                     $contenido = stripslashes($contenido);
                     $nombre = stripslashes($nombre);
                 }    
                 $contenido = mysql_real_escape_string($contenido);
                 $nombre = mysql_real_escape_string($nombre);

                 /*Revisamos si no se esta subiendo ninguna imagen*/
                 if ($Img['imagen']['size'] == 0)
                 { 
                     $database = new BaseDatos("publicacion");
                     $array = array($perfil, $muro, $nombre, $contenido, 1);
                     $database->insert("publicacion (autor, muro, nombre, contenido, visible)", $array); 
                     $database = new BaseDatos("publicacion");
                     $database->modificarDatos("muro", "Num_pub = Num_pub+1", "id=$array[1]");   
                 }
                 else
                 {  
                   $fileName = $Img['imagen']['name'];
                   $tmpName  = $Img['imagen']['tmp_name'];
                   $fileSize = $Img['imagen']['size'];
                   $fileType = $Img['imagen']['type'];

                   /* Por mayor seguridad revisamos el tipo MYME del archivo subido*/  
                   $tipos = array("image/gif", "image/jpeg", "image/pjpeg", "image/bmp",
                       "image/png");
                   if (!in_array($fileType, $tipos))
                   {
                       unlink($tmpName);
                       echo "<script language='JavaScript'>
                                alert('La extension que subio no es valida.'); 
                            </script>";
                   }
                   else
                   {    
                       /*Verificamos que el archivo no sobrepase los 2 megas*/
                       if ($fileSize > 2097152)
                       {
                         echo "<script language='JavaScript'>
                                alert('El archivo que subio es muy grande. No puede sobrepasar los 2 Megabytes.'); 
                               </script>";
                       }
                       else {
                           $fp      = fopen($tmpName, 'r');
                           $content = fread($fp, filesize($tmpName));
                           $content = addslashes($content);
                           fclose($fp);

                           $database = new BaseDatos();
                           $array = array($perfil, $muro, $nombre, $contenido, $content, $fileName, $fileType, $fileSize, 1);
                           $database->insert("Publicacion (autor, muro, nombre, contenido, imagen, nom_Img, tipo_Img, tam_Img, visible)", $array); 
                           $database = new BaseDatos();
                           $database->modificarDatos("Muro", "Num_pub = Num_pub+1", "id=$array[1]");
                       }
                   } 
                }         
             }  
        }
	        
	/* Funcion que retorna un arreglo con los atributos de los comentarios
         * Parametros
         * $id = Identificador de la publicacion
         */
	function VerComentarios($id)
	{
            $database = new BaseDatos(); 
            $com = $database->selectComentario($id);
            return $com;
	}
	
        /*Funcion que elimina la publicacion a la base de datos
         * Parametros
         * id = identificador de la publicacion
         * $usuario = $_SESSION, la informacion del usuario que esta conectado
         */
        function eliminarPublicacion($id, $usuario)
	{
            $database = new BaseDatos();
            $info_muro = $database->select4("Publicacion", "id", $id, "muro, autor");

            /*Verificamos que el usuario que quiera eliminar sea el autor o administrador*/
            if ((strcmp($usuario['k_username'], $info_muro[1]) == 0) || 
                    (strcmp($usuario['tipo'], "admin") == 0))
            {        
                $database = new BaseDatos();
                $database->modificarDatos("Publicacion", "visible=0", "id=$id");
                $database = new BaseDatos();
                $database->modificarDatos("Muro", "Num_pub = Num_pub-1", "id=$info_muro[0]");   
            }
            else 
            {
                echo "<script language='JavaScript'>
                        alert('Solo el autor o un administrador puede borrar la publicacion.'); 
                      </script>";    
            }    
        }
        	
        /*Funcion que obtiene la imagen de una publicación
         * Parametros
         * id = identificador de la publicacion
         */
        function obtenerImagen($id)
	{
            $database = new BaseDatos();
            $info_imagen = $database->select4("Publicacion", "id", $id, "tam_Img, tipo_Img, nom_Img, imagen");
            
            header("Content-length: $info_imagen[0]");
            header("Content-type: $info_imagen[1]");
	    header("Content-Disposition: attachment; filename=$info_imagen[2]");
	    print $info_imagen[3];
	    exit;
            
        }
        
        /*Funcion que Muestra la imagen
         * Parametros
         * id = identificador de la publicacion
         */
        function mostrarImagen($id)
	{
            $database = new BaseDatos();
            $info_imagen = $database->select4("Publicacion", "id", $id, "tipo_Img, imagen");
            
            header("Content-type: $info_imagen[0]");
	    echo $info_imagen[1];
	    exit;
            
        }
        
        /*Funcion que obtiene la publicacion especificada
         * Parametros
         * id = identificador de la publicacion
         */
        function obtenerPublicacion($id)
	{
            $database = new BaseDatos();
            $arr_val = array($id);
            $arr_atr = array("id"); 
            $pub = $database->select2("Publicacion", $arr_val, $arr_atr);
            return $pub; 
        }

        /*Funcion que obtiene el nombre del autor de la publicacion
         * Parametros
         * autor = referencia a la instancia perfil 
         *      obtenido de una publicacion
         */
        function obtenerNombre($usuario)
	{
            $database = new BaseDatos();
            $info_nombre = $database->select4("perfil", "usrname", $usuario, "nombre, apellido");
            $autor = $info_nombre[0]." ".$info_nombre[1]; 
            return $autor; 
        }
}

?>
